package cn.com.zero.manager.auth.api.utils;

import cn.com.zero.base.constant.ZeroConstants;
import cn.com.zero.manager.auth.api.constant.TokenKeyConstant;

/**
 * @author Huangyong
 * @version 1.0.0
 * @Description 获取token相关的缓存常量值
 * @createTime 2023-3-2 11:07
 */
public class TokenUtil {

    /**
     * 获取权限缓存的键值
     *
     * @param userID 手机号
     * @return 键值
     */
    public static String getAuthByUserIDKey(String userID) {
        // 以userID为hy001为例
        // 键值为：Zero:User:token:hy001
        return ZeroConstants.REDIS_CACHE_PREFIX + TokenKeyConstant.MANAGE_MS_KEY + ":" + TokenKeyConstant.TOKEN_KEY_AUTH + ":" + userID;
    }

    /**
     * 获取权限缓存的键值
     *
     * @return 键值
     */
    public static String getAuthKey() {
        return ZeroConstants.REDIS_CACHE_PREFIX + TokenKeyConstant.MANAGE_MS_KEY + ":" + TokenKeyConstant.TOKEN_KEY_AUTH + ":*";
    }

    /**
     * 获取用户信息缓存的键值
     *
     * @param userID 手机号
     * @return 键值
     */
    public static String getUserByUserIDKey(String userID) {
        // 以userID为hy001为例
        // 键值为：Zero:User:token:hy001
        return ZeroConstants.REDIS_CACHE_PREFIX + TokenKeyConstant.MANAGE_MS_KEY + ":" + TokenKeyConstant.TOKEN_KEY_USER + ":" + userID;
    }

    /**
     * 获取用户信息缓存的键值
     *
     * @return 键值
     */
    public static String getTokenKey() {
        // 键值为：Zero:User:token:*
        return ZeroConstants.REDIS_CACHE_PREFIX + TokenKeyConstant.MANAGE_MS_KEY + ":" + TokenKeyConstant.TOKEN_KEY_USER + ":*";
    }

    /**
     * 获取公共权限缓存的键值
     *
     * @return 键值
     */
    public static String getPublicPermissions() {
        return ZeroConstants.REDIS_CACHE_PREFIX + TokenKeyConstant.MANAGE_MS_KEY + ":" + TokenKeyConstant.TOKEN_KEY_PERMISSIONS + ":";
    }

    /**
     * 获取需要登录的公共权限缓存的键值
     *
     * @return 键值
     */
    public static String getPublicPermissionsIsLogin() {
        return ZeroConstants.REDIS_CACHE_PREFIX + TokenKeyConstant.MANAGE_MS_KEY + ":" + TokenKeyConstant.TOKEN_KEY_PERMISSIONS_ISLOGIN + ":";
    }

    /**
     * 获取在线缓存的键值
     * @param userID 用户编号
     * @return 键值
     */
    public static String getOnlineKeyByUserID(String userID) {
        return ZeroConstants.REDIS_CACHE_PREFIX + TokenKeyConstant.MANAGE_MS_KEY + ":" + TokenKeyConstant.TOKEN_KEY_ONLINE + ":"+userID;
    }

    /**
     * 获取在线缓存的键值
     *
     * @return 键值
     */
    public static String getOnlineKey() {
        return ZeroConstants.REDIS_CACHE_PREFIX + TokenKeyConstant.MANAGE_MS_KEY + ":" + TokenKeyConstant.TOKEN_KEY_ONLINE + ":*";
    }

}
